package cn.ncupyh;

public class CompareStringTest {
    /*给定两个字符串A,B
    A旋转n次后的字符是否与B相等
    相等则返回true,不等则false,
     */
    /* 法一:用substring进行截取
       法二:用字符数组,先将第一个拿出来,再把后面的前移,最后把第一个字符移到最后一个,并转化为字符串
    */
    public static void main(String[] args) {
        String strA = "abcde";
        String strB = "abcde";
//      /*法一:*/
//////        //将A旋转1次
////        String s = reverse(strA);
////        System.out.println(s);
//
////        将A旋转n次后比较
//        Boolean result = compareString(strA,strB);
//        System.out.println(result);

        /*法二:*/
        //旋转一次
        String arrStr = reverseArr(strA);
        Boolean check = compareString(arrStr, strB);
        System.out.println(check);

    }

    //将字符转换华为数组,翻转一次
    public static String reverseArr(String str){
        //先转化为字符数组
        char[] arr = str.toCharArray();
        //再提取第一个字符
        char first = arr[0];
        //整体往前移动
        for (int i = 1; i < arr.length; i++) {
            arr[i-1] = arr[i];
        }
        arr[arr.length-1] = first;
        String result = new String(arr);
        return result;
    }
    //将A旋转n次后比较
    public static Boolean compareString(String strA,String strB){
        for (int i = 0; i < strA.length(); i++) {
            strA = reverse(strA);
            if(strA.equals(strB)){
                return true;
            }
        }
        return false;
    }

    //将A旋转1次
    public static String reverse(String str){
        char first = str.charAt(0);
        String end = str.substring(1) ;
        return end + first;
    }
}
